/**
 * =================================================================
 * 版权所有 2011-2020 深圳泰海网络科技服务有限公司，并保留所有权利
 * -----------------------------------------------------------------
 * 这不是一个自由软件！您不能在任何未经允许的前提下对程序代码进行修改和使用；
 * 不允许对程序代码以任何形式任何目的的再发布
 * =================================================================
 */
package com.imoney.payment.web.utils;

import java.lang.reflect.Field;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import com.imoney.framework.config.properties.Property;

/**
 * 
 * 类说明：常用工具类
 * 
 * 
 * <p>
 * 详细描述：
 * 
 * 
 * @author 271762 李进飞
 * 
 *         CreateDate: 2012-10-11
 */
public class CommonUtil {
	
	/**
	 * 方法说明：对登录对象进行加密(sign不参与加密)
	 * 
	 * @param obj
	 * @param key
	 * @return
	 * @throws Exception
	 */
	public static String encrypt(Object obj, String key) {
		try {
			Field[] fieldArray = obj.getClass().getDeclaredFields();
			StringBuffer sb = new StringBuffer();
			for (Field field : fieldArray) {
				boolean bool = field.isAccessible();
				field.setAccessible(true);
				Object val = field.get(obj);
				if (val != null && !field.getName().equals("sign"))
					sb.append(val.toString());
				field.setAccessible(bool);
			}
			// return Md5Utils.encryptMD5(sb.toString(), key);
			return "";
		} catch (Exception e) {
			return "";
		}
	}

	/**
	 * 
	 * 
	 * 方法说明：验证手机号格式
	 * 
	 * @param
	 * @return 格式正确返回true，否则返回false
	 */
	public static boolean isMobile(String mobile) {
		return match(Property.getProperty("MOBILE_PATTEERN"), mobile);
	}

	/**
	 * 验证是不是数字(没有小数点)
	 * 
	 * @param number
	 * @return
	 */
	public static boolean isInteger(String number) {
		return match(Property.getProperty("NUMBER_PATTERN"), number);
	}

	/**
	 * 验证是不是数字(验证到小数点后两位)
	 * 
	 * @param number
	 * @return
	 */
	public static boolean isDecimalNumber(String number) {
		return match(Property.getProperty("DOUBLE_PATTERN"), number);
	}

	/**
	 * 方法说明：难证时间格式<br>
	 * 
	 * @param date
	 * @return
	 */
	public static boolean isDate(String date) {
		return match(Property.getProperty("DATE_TIME_PATTERN"), date);
	}

	/**
	 * 方法说明：是否由英文与数据组成格式<br>
	 * 
	 * @param date
	 * @return
	 */
	public static boolean isLetter(String letter) {
		return match(Property.getProperty("LETTER_NUM_PATTERN"), letter);
	}

	/**
	 * 方法说明：是否由中文组成格式<br>
	 * 
	 * @param date
	 * @return
	 */
	public static boolean isChinese(String str) {
		return match(Property.getProperty("CHINIESE_PATTERN"), str);
	}

	/**
	 * 方法说明：验证座机<br>
	 * 
	 * @param tel
	 * @return
	 */
	public static boolean isTel(String tel) {
		return match(Property.getProperty("TEL_PATTERN"), tel);
	}

	/**
	 * 执行正则表达式
	 * 
	 * @param pattern
	 *            表达式
	 * @param str
	 *            待验证字符串
	 * @return 返回 <b>true </b>,否则为 <b>false </b>
	 */
	private static boolean match(String pattern, String str) {
		Pattern p = Pattern.compile(pattern);
		Matcher m = p.matcher(str);

		return m.find();
	}

}
